using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.IO;
using System.Net;


namespace VigilanciaPG
{
    public partial class frmControl : Form
    {
        public frmControl()
        {
            InitializeComponent();
        }
        static bool EsPar(int n)
        {
            return ((n % 2) == 0);
        }
        private void btnBuscar_Click(object sender, EventArgs e)
        {
           //txtBuscar.Text.Replace("-", "");
            
            buscar();

        }

        private void frmControl_Load(object sender, EventArgs e)
        {
            
            txtAMaterno.Enabled = false;
            txtAMaterno.Enabled = false;
            txtEmpresa.Enabled = false;
            txtCURP.Enabled = false;
            txtNombre.Enabled = false;
            txtAPaterno.Enabled = false;
            txtIMSS.Enabled = false;

            
           // string[] weekDays = new string[] { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };
           //foreach(string i in weekDays)
           //    if (i == "Mon")
           //    {
           //        MessageBox.Show("encontre uno igual el cual es: "+i);
           //    }
                
      
           

        }

        private void txtBuscar_KeyPress(object sender,
                System.Windows.Forms.KeyPressEventArgs e)
        {
            // Si se pulsa la tecla Intro, pasar al siguiente
            //if( e.KeyChar == Convert.ToChar('\r') ){
            if (e.KeyChar == '\r')
            {
                e.Handled = true;
                buscar();

            }
        }
        DateTime Datevalue = new DateTime(2008, 6, 11);



        private Stream getUrl(string URL)
        {

            string strResp = "";
            HttpWebRequest request = ((HttpWebRequest)WebRequest.Create(URL));

            HttpWebResponse response = ((HttpWebResponse)request.GetResponse());

            try
            {

                return response.GetResponseStream();

            }
            catch
            {
                return response.GetResponseStream();
                //elError = ex.ToString();
            }

        }

        private void borrarTextBox()
        {
            txtAMaterno.Text = "";
            txtAPaterno.Text = "";
            txtCURP.Text = "";
           txtNombre.Text="";
           txtIMSS.Text = "";
            txtAMaterno.Enabled = false;
            txtAPaterno.Enabled = false;
            txtCURP.Enabled = false;
            txtNombre.Enabled = false;
            txtIMSS.Enabled = false; ;
            pictureBox1.Hide();
            dgvEntradas.Hide();
            dgvSalidas.Hide();
        }
       
    
     private void buscar()
        {
            //Busca el empleado a ingresar   
            DataSet dtbRegistro = clsFunciones.dtGetDataSet("Select * from tbEmpleados where StrImss='" + txtBuscar.Text.Replace("'","-") + "'");
         //Obtine la hora actual del servidor: (solo hora y minutos)  
            DataSet HoraActual = clsFunciones.dtGetDataSet("SELECT CONVERT(nvarchar(5), GETDATE(), 108) AS Hora");
            
         string horaNow = HoraActual.Tables[0].Rows[0]["Hora"].ToString();
           
             if (dtbRegistro.Tables[0].Rows.Count == 0)
            {
                borrarTextBox();
                lblNoencontrado.Text = "No encontrado";
                

               pictureBox2.Image = Image.FromFile("C:\\Documents and Settings\\BW9648\\Desktop\\VigilanciaPG\\VigilanciaPG\\VigilanciaPG\\Resources\\semaforo_rojo.jpg");
                txtBuscar.Text = "";
                
                

            }
            else
            {   //Obtenemos la hora de entrada y la de salida del empleado:
                DataSet EntradaOSalida = clsFunciones.dtGetDataSet("SELECT SUBSTRING (CONVERT(char(16),a.dtHInicio,121), 12,8) AS Hora_Inicio, SUBSTRING (CONVERT(char(16),a.dtHfin,121), 12,8) AS Hora_fin FROM tbEmpleados e JOIN tbActividades a ON e.StrImss = a.fkIdActividades WHERE e.StrImss = '" + txtBuscar.Text.Replace("'", "-") + "'");
                //se selecciona sus dias de trabajo y el dia actual
                DataSet DiasTrabajo = clsFunciones.dtGetDataSet("SELECT strDHabiles,DATENAME(dw, getdate()) AS DiaHoy FROM dbo.tbActividades WHERE fkIdActividades='" + txtBuscar.Text.Replace("'", "-") + "' ");

                 string DiasSemana = DiasTrabajo.Tables[0].Rows[0]["strDHabiles"].ToString();
                
                 string hoy = DiasTrabajo.Tables[0].Rows[0]["DiaHoy"].ToString();
              
                
         
                string[] weekDays;
                switch (DiasSemana)
                { 
                    case "Lu-Vi":
                      weekDays = new string[] { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" };   
                        break;

                    case "Lu-Dom":
                         weekDays = new string [] { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" };
                         break;

                    default: 
                       weekDays = new string[] { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" };
                        break;
                       
                }
               
                 //Asigamos las horas de entrada y de saldia a las nuevas variables Hentrada y Hsalida

                 string Hentrada = EntradaOSalida.Tables[0].Rows[0]["Hora_Inicio"].ToString();
                 string Hsalida = EntradaOSalida.Tables[0].Rows[0]["Hora_Fin"].ToString();

                 //Si Hora de entrada o Hora de salida no es igual a la hora actual
                 // Entonces indica en pantalla que esta fuera de horario.
                 foreach(string i in weekDays)
                     if (i != hoy)
                     {


                         if (Hentrada != horaNow || Hsalida != horaNow)
                         {

                             label7.Text = "Fuera de horario, sus horarios de entrada son :" + Hentrada + " y Salida: " + Hsalida + "";
                         }
                     }

                 pictureBox1.Show();
                 dgvSalidas.Show();
                 dgvEntradas.Show();

                 lblNoencontrado.Text = "";
                string foto = dtbRegistro.Tables[0].Rows[0]["strFotografia"].ToString();
                Stream StreamImagen;
                string elError = "";
                StreamImagen = getUrl("http://valp-page/vigilancia/fotos/"+foto);
                if (elError == "")
                {
                    pictureBox1.Image = System.Drawing.Image.FromStream(StreamImagen);
                }
                else
                {
                    //MsgBox(elError);
                }
               

               // pictureBox1.Image = Image.FromFile("C:\\Documents and Settings\\BW9648\\Desktop\\VigilanciaPG\\VigilanciaPG\\VigilanciaPG\\Resources\\LILI.jpg");
                txtAPaterno.Text  = dtbRegistro.Tables[0].Rows[0]["strAPaterno"].ToString();
                txtAMaterno.Text = dtbRegistro.Tables[0].Rows[0]["strAMaterno"].ToString();
                txtNombre.Text = dtbRegistro.Tables[0].Rows[0]["strNombre"].ToString();
                txtCURP.Text = dtbRegistro.Tables[0].Rows[0]["strCURP"].ToString();
                string ims = txtIMSS.Text = dtbRegistro.Tables[0].Rows[0]["strImss"].ToString();
                DataSet ValidarHora = clsFunciones.dtGetDataSet("SELECT CONVERT(nvarchar(5), GETDATE(), 108) AS HoraActual");
                
                //String  HoraActual = ValidarHora.Tables[0].Rows[0]["HoraActual"].ToString();
               // MessageBox.Show(HoraActual);
                String validar;
                validar = dtbRegistro.Tables[0].Rows[0]["strStatus"].ToString();
                txtBuscar.Text = "";
                if (validar == "I")
              
                            
                {
                    //Cambia el semaforo a rojo si la variable validar valie I
                    pictureBox2.Image = Image.FromFile("C:\\Documents and Settings\\BW9648\\Desktop\\VigilanciaPG\\VigilanciaPG\\VigilanciaPG\\Resources\\semaforo_rojo.jpg");

                    MessageBox.Show("No puedes pasar");
                    MessageBox.Show(validar);
                }
                if (validar == "A")
                {
                    pictureBox2.Image = Image.FromFile("C:\\Documents and Settings\\BW9648\\Desktop\\VigilanciaPG\\VigilanciaPG\\VigilanciaPG\\Resources\\semaforo_verde.jpg");
                    //Se hace una query ala tabla tbRegistros por Numero de Imms y por la fecha actual en formato yyyymmdd eliminando el tiempo (horas minutos etc..)
                    DataSet dsEntradaSalida = clsFunciones.dtGetDataSet("SELECT  * FROM dbo.tbRegistros  WHERE strNoSS='" + txtIMSS.Text + "' AND dtfecha>=LEFT(CONVERT(VARCHAR, GETDATE(), 120), 10)");
                    //dgvEntradas.DataSource = dsEntradaSalida.Tables[0];
                    DataSet GridEntradas = clsFunciones.dtGetDataSet("SELECT TOP(10) * FROM dbo.tbRegistros  WHERE strNoSS='" + txtIMSS.Text + "' AND dtfecha>=LEFT(CONVERT(VARCHAR, GETDATE(), 120), 10) AND strStatus='Entrada' ORDER BY pkIdRegistro desc");
                    DataSet GridSalidas = clsFunciones.dtGetDataSet("SELECT  * FROM dbo.tbRegistros  WHERE strNoSS='" + txtIMSS.Text + "' AND dtfecha>=LEFT(CONVERT(VARCHAR, GETDATE(), 120), 10) AND strStatus='Salida'ORDER BY pkIdRegistro desc");
                    
                    dgvSalidas.DataSource = GridSalidas.Tables[0];
                    dgvEntradas.DataSource = GridEntradas.Tables[0];


                    string Status;

                    if (dsEntradaSalida.Tables[0].Rows.Count == 0)
                    {
                        Status = "Entrada";
                        clsFunciones.nonquery("INSERT INTO dbo.tbRegistros VALUES (GetDate(),'" + Status + "','" + txtIMSS.Text + "')");

                    }

                    else
                    {
                        if (EsPar(dsEntradaSalida.Tables[0].Rows.Count) == false)
                        {
                            Status = "Salida";
                            clsFunciones.nonquery("INSERT INTO dbo.tbRegistros VALUES (GetDate(),'" + Status + "','" + txtIMSS.Text + "')");
                        }
                        else
                        {
                            Status = "Entrada";
                            clsFunciones.nonquery("INSERT INTO dbo.tbRegistros VALUES (GetDate(),'" + Status + "','" + txtIMSS.Text + "')");
                        }
                    }


                }


            }







        }

    
     }




    }


//}




